In [1]:
pip install pytrends matplotlib pandas seaborn plotly
Requirement already satisfied: pytrends in d:\users\admin\anaconda3\lib\site-packages (4.9.2)
Requirement already satisfied: matplotlib in d:\users\admin\anaconda3\lib\site-packages (3.9.2)
Requirement already satisfied: pandas in d:\users\admin\anaconda3\lib\site-packages (2.2.2)
Requirement already satisfied: seaborn in d:\users\admin\anaconda3\lib\site-packages (0.13.2)
Requirement already satisfied: plotly in d:\users\admin\anaconda3\lib\site-packages (5.24.1)
Requirement already satisfied: requests>=2.0 in d:\users\admin\anaconda3\lib\site-packages (from pytrends) (2.32.3)
Requirement already satisfied: lxml in d:\users\admin\anaconda3\lib\site-packages (from pytrends) (5.2.1)
Requirement already satisfied: contourpy>=1.0.1 in d:\users\admin\anaconda3\lib\site-packages (from matplotlib) (1.2.0)
Requirement already satisfied: cycler>=0.10 in d:\users\admin\anaconda3\lib\site-packages (from matplotlib) (0.11.0)
Requirement already satisfied: fonttools>=4.22.0 in d:\users\admin\anaconda3\lib\site-packages (from matplotlib) (4.51.0)
Requirement already satisfied: kiwisolver>=1.3.1 in d:\users\admin\anaconda3\lib\site-packages (from matplotlib) (1.4.4)
Requirement already satisfied: numpy>=1.23 in d:\users\admin\anaconda3\lib\site-packages (from matplotlib) (1.26.4)
Requirement already satisfied: packaging>=20.0 in d:\users\admin\anaconda3\lib\site-packages (from matplotlib) (24.1)
Requirement already satisfied: pillow>=8 in d:\users\admin\anaconda3\lib\site-packages (from matplotlib) (10.4.0)
Requirement already satisfied: pyparsing>=2.3.1 in d:\users\admin\anaconda3\lib\site-packages (from matplotlib) (3.1.2)
Requirement already satisfied: python-dateutil>=2.7 in d:\users\admin\anaconda3\lib\site-packages (from matplotlib) (2.9.0.post0)
Requirement already satisfied: pytz>=2020.1 in d:\users\admin\anaconda3\lib\site-packages (from pandas) (2024.1)
Requirement already satisfied: tzdata>=2022.7 in d:\users\admin\anaconda3\lib\site-packages (from pandas) (2023.3)
Requirement already satisfied: tenacity>=6.2.0 in d:\users\admin\anaconda3\lib\site-packages (from plotly) (8.2.3)
Requirement already satisfied: six>=1.5 in d:\users\admin\anaconda3\lib\site-packages (from python-dateutil>=2.7->matplotlib) (1.16.0)
Requirement already satisfied: charset-normalizer<4,>=2 in d:\users\admin\anaconda3\lib\site-packages (from requests>=2.0->pytrends) (3.3.2)
Requirement already satisfied: idna<4,>=2.5 in d:\users\admin\anaconda3\lib\site-packages (from requests>=2.0->pytrends) (3.7)
Requirement already satisfied: urllib3<3,>=1.21.1 in d:\users\admin\anaconda3\lib\site-packages (from requests>=2.0->pytrends) (2.2.3)
Requirement already satisfied: certifi>=2017.4.17 in d:\users\admin\anaconda3\lib\site-packages (from requests>=2.0->pytrends) (2025.4.26)
Note: you may need to restart the kernel to use updated packages.
In [2]:
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
import plotly.express as px
from pytrends.request import TrendReq

setup pytrend library and keyword define¶

In [3]:
pytrends =TrendReq(hl='en-US', tz=360)
keyword = "Data Analytics"

Data Request¶

In [4]:
pytrends.build_payload([keyword], cat =0,timeframe ='today 12-m', geo='', gprop = '')

Country wise interest¶

In [6]:
region_data = pytrends.interest_by_region()
region_data = region_data.sort_values(by = keyword,ascending = False).head(15)
In [7]:
plt.figure(figsize = (10,6))
sns.barplot(x =region_data[keyword], y = region_data.index, palette = "Blues_d")
plt.title(f"Top Countries for'{keyword}'")
plt.xlabel("Interest")
plt.ylabel("Country")
plt.show()
C:\Users\ADMIN\AppData\Local\Temp\ipykernel_9928\3642021073.py:2: FutureWarning: 

Passing `palette` without assigning `hue` is deprecated and will be removed in v0.14.0. Assign the `y` variable to `hue` and set `legend=False` for the same effect.

  sns.barplot(x =region_data[keyword], y = region_data.index, palette = "Blues_d")
No description has been provided for this image

World map¶

In [8]:
region_data =region_data.reset_index()
fig = px.choropleth(region_data,
                    locations='geoName',
                    locationmode='country names',
                    color=keyword,
                    title=f"search Interest for '{keyword}' by Country",
                    color_continuous_scale='Blues')
fig.show()

Time wise interest¶

In [11]:
time_df = pytrends.interest_over_time()
D:\Users\ADMIN\Anaconda3\Lib\site-packages\pytrends\request.py:260: FutureWarning:

Downcasting object dtype arrays on .fillna, .ffill, .bfill is deprecated and will change in a future version. Call result.infer_objects(copy=False) instead. To opt-in to the future behavior, set `pd.set_option('future.no_silent_downcasting', True)`

In [12]:
plt.figure(figsize=(12,6))
plt.plot(time_df.index,time_df[keyword], marker ='o', color = 'purple')
plt.title(f"search interest over time '{keyword}' ")
plt.xlabel("Date")
plt.ylabel("Interest")
plt.grid(True)
plt.show()
No description has been provided for this image

Multiple keywords compare¶

In [13]:
kw_list = ["cloud computing", "data analytics", "machine learning"]
pytrends.build_payload(kw_list, cat=0, timeframe='today 12-m', geo ='', gprop='')
In [14]:
compare_df = pytrends.interest_over_time()
plt.figure(figsize=(12,6))
for kw in kw_list:
    plt.plot(compare_df.index,compare_df[kw], label = kw)

plt.title("keyword compare over time")
plt.xlabel("Date")
plt.ylabel("Interest")
plt.legend()
plt.grid(True)
plt.tight_layout()
plt.show()
D:\Users\ADMIN\Anaconda3\Lib\site-packages\pytrends\request.py:260: FutureWarning:

Downcasting object dtype arrays on .fillna, .ffill, .bfill is deprecated and will change in a future version. Call result.infer_objects(copy=False) instead. To opt-in to the future behavior, set `pd.set_option('future.no_silent_downcasting', True)`

No description has been provided for this image
In [ ]: